package org.japo.java.entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;

/**
 *
 * @author José A. Pacheco Ondoño - joanpaon@gmail.com
 */
public class Persona implements Serializable {

    // Gestiona cambios de propiedad
    private transient final PropertyChangeSupport propertyChangeSupport = 
            new PropertyChangeSupport(this);

    // Campos de la entidad
    private String nombre;
    private int edad;
    private boolean conductor;

    // Identificadores de campos
    public static final String PROP_NOMBRE = "nombre";
    public static final String PROP_EDAD = "edad";
    public static final String PROP_CONDUCTOR = "conductor";

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        String oldNombre = this.nombre;
        this.nombre = nombre;
        propertyChangeSupport.firePropertyChange(PROP_NOMBRE, oldNombre, nombre);
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        int oldEdad = this.edad;
        this.edad = edad;
        propertyChangeSupport.firePropertyChange(PROP_EDAD, oldEdad, edad);
    }

    public boolean isConductor() {
        return conductor;
    }

    public void setConductor(boolean conductor) {
        boolean oldConductor = this.conductor;
        this.conductor = conductor;
        propertyChangeSupport.firePropertyChange(PROP_CONDUCTOR, oldConductor, conductor);
    }

    // Método copiado y pegado
    public void addPropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.addPropertyChangeListener(listener);
    }

    // Método copiado y pegado
    public void removePropertyChangeListener(PropertyChangeListener listener) {
        propertyChangeSupport.removePropertyChangeListener(listener);
    }

    public void asignarValoresEjemplo() {
        setNombre("Celedonio Estoi Cuadrao");
        setEdad(19);
        setConductor(false);
    }
}
